Making new effects
------------------
All flag effects are based on the FlagEffect class. A flag effect is very much like a mutator, except that it applies to an individual flag instead of the whole game. The FlagEffects mutator passes all appropriate FlagMutator calls on to the relevant FlagEffect object.

To add your own effects, just make an effect (or five) based on the FlagEffect class, build your .u file, and include an object declaration in your .int file with MetaClass=FlagEffects.FlagEffect, just like the ones you see in FlagEffects.int. Your stuff should automatically show up in the "Choose Flag Effects" window. Remember, in order for your effect to be used, you have to actually choose them, just like mutators :)

Look at FEVengeance for an example of adding new effects. This one was packaged as a separate file because it depends on the Relics package from the first Bonus Pack, which some people don't have.


Making your flag-related gametype compatible
--------------------------------------------

Flag Effects and damage:

A special unseen pawn called a FlagInstigator is created for each flag for effects that cause damage (like Damage and Bomb). The Instigator variable in each flag and each effect is set to the corresponding FlagInstigator for that flag, so you can damage players from inside your Flag Effect, and the death message will correctly say something like "MossMan was killed by the Green Flag." Without the FlagInstigator, such deaths would be recorded as suicides.

FlagInstigators have a Team value of 255 so they can damage everybody. The problem is that it makes TeamScoreBoard.ShowScores() spew array-out-of-bounds errors. To fix this, you need to override ShowScores in your own scoreboard class. Copy and paste the whole function, and change this line (in the second 'for' loop):

	if ( !PRI.bIsSpectator || PRI.bWaitingPlayer )

to this:

	if ( (!PRI.bIsSpectator || PRI.bWaitingPlayer) && (PRI.Team < 4) )

If your game is not a team game, then this does not apply.